package io.github.echarts.option.series;

import io.github.echarts.option.style.ItemStyle;
import io.github.echarts.option.style.LabelStyle;

import java.util.List;
import java.util.Map;

/**
 * 漏斗图配置项
 */
public class FunnelSeries extends SeriesOption {
    
    /**
     * 数据排序方式，可选：
     * 'ascending'：升序，小的在上
     * 'descending'：降序，大的在上
     * 'none'：按数据顺序，不排序
     */
    private String sort = "descending";
    
    /**
     * 数据项间距，单位为像素
     */
    private Integer gap = 0;
    
    /**
     * 漏斗图最小宽度，可以是像素值或百分比
     */
    private Object minSize = "0%";
    
    /**
     * 漏斗图最大宽度，可以是像素值或百分比
     */
    private Object maxSize = "100%";
    
    /**
     * 漏斗图朝向，可选：
     * 'vertical'：垂直方向，默认
     * 'horizontal'：水平方向
     */
    private String orient = "vertical";
    
    /**
     * 漏斗图数据项样式
     */
    private ItemStyle itemStyle;
    
    /**
     * 漏斗图标签配置
     */
    private LabelStyle label;
    
    /**
     * 漏斗对齐方式，可选：
     * 'center'：居中对齐，默认
     * 'left'：左对齐
     * 'right'：右对齐
     */
    private String funnelAlign = "center";
    
    public FunnelSeries() {
        super();
        this.setType("funnel");
    }
    
    // Getters and Setters
    
    public String getSort() {
        return sort;
    }
    
    public FunnelSeries setSort(String sort) {
        this.sort = sort;
        return this;
    }
    
    public Integer getGap() {
        return gap;
    }
    
    public FunnelSeries setGap(Integer gap) {
        this.gap = gap;
        return this;
    }
    
    public Object getMinSize() {
        return minSize;
    }
    
    public FunnelSeries setMinSize(Object minSize) {
        this.minSize = minSize;
        return this;
    }
    
    public Object getMaxSize() {
        return maxSize;
    }
    
    public FunnelSeries setMaxSize(Object maxSize) {
        this.maxSize = maxSize;
        return this;
    }
    
    public String getOrient() {
        return orient;
    }
    
    public FunnelSeries setOrient(String orient) {
        this.orient = orient;
        return this;
    }
    
    public ItemStyle getItemStyle() {
        return itemStyle;
    }
    
    public FunnelSeries setItemStyle(ItemStyle itemStyle) {
        this.itemStyle = itemStyle;
        return this;
    }
    
    public LabelStyle getLabel() {
        return label;
    }
    
    public FunnelSeries setLabel(LabelStyle label) {
        this.label = label;
        return this;
    }
    
    public String getFunnelAlign() {
        return funnelAlign;
    }
    
    public FunnelSeries setFunnelAlign(String funnelAlign) {
        this.funnelAlign = funnelAlign;
        return this;
    }
} 